package com.coincalf.wallet.entity;

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotations.Version;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 币种配置信息
 * </p>
 *
 * @author crow
 * @since 2018-05-16
 */
@Data
@Accessors(chain = true)
@TableName("coin_config")
public class CoinConfig extends Model<CoinConfig> {

    private static final long serialVersionUID = 1L;

    /**
     * 币种ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 币种名称
     */
    private String name;

    /**
     * 是否主链
     */
    @TableField("is_main")
    private Integer isMain;

    /**
     * 主链币种id，针对以太坊等代币系列
     */
    @TableField("main_coin_id")
    private Long mainCoinId;

    /**
     * 代币合约地址，针对以太坊等ERC20代币
     */
    @TableField("contract_address")
    private String contractAddress;

    /**
     * rpc服务ip
     */
    @TableField("rpc_ip")
    private String rpcIp;

    /**
     * rpc服务port
     */
    @TableField("rpc_port")
    private String rpcPort;

    /**
     * rpc用户
     */
    @TableField("rpc_user")
    private String rpcUser;

    /**
     * rpc密码
     */
    @TableField("rpc_pwd")
    private String rpcPwd;

    /**
     * xnb：人民币
     * default：比特币系列
     * ETH：以太坊
     * ethToken：以太坊代币
     */
    private String type;

    /**
     * 最后一个区块
     */
    @TableField("last_block")
    private String lastBlock;

    /**
     * 主账户地址
     */
    @TableField("main_account")
    private String mainAccount;

    /**
     * 钱包用户名
     */
    @TableField("wallet_user")
    private String walletUser;

    /**
     * 最低确认数
     */
    @TableField("min_confirm")
    private Integer minConfirm;

    /**
     * 钱包密码
     */
    @TableField("wallet_pass")
    private String walletPass;

    /**
     * 主账户地址
     */
    @TableField("main_addr")
    private String mainAddr;

    /**
     * 定时任务
     */
    private String task;

    /**
     * 是否可用
     * 0:不可用
     * 1:可用
     */
    private Integer status;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
